generate_exotic_upgrades.js ➔ clone   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
nop 1
1
/* eslint-env node */
2
/*jslint node: true */
3
'use strict';
4
5
const jsonfile = require('jsonfile');
6
const template = require('lodash.template');
7
8
let exoticUpgrades = jsonfile.readFileSync('build/data/exotic_upgrades.json');
9
let darkUpgrades = jsonfile.readFileSync('build/data/dark_upgrades.json');
10
let generators = jsonfile.readFileSync('build/data/generators.json');
11
12
for(let key in exoticUpgrades){
13
  let upgrade = exoticUpgrades[key];
14
    if(!upgrade.prices){
15
      continue;
16
    }
17
  let nameTemplate = template(upgrade.name);
18
  let descriptionTemplate = template(upgrade.description);
19
  for(let i in upgrade.prices){
20
    let generatedUpgrade = clone(upgrade);
21
    delete generatedUpgrade.prices;
22
    let price = upgrade.prices[i];
23
    generatedUpgrade.price = price;
24
    generatedUpgrade.name = nameTemplate({'id': i});
25
    generatedUpgrade.description = descriptionTemplate({'id': i});
26
    for(let index in generatedUpgrade.function){
27
      generatedUpgrade.function[index] = template(generatedUpgrade.function[index])({'id': i});
28
    }
29
    for(let index in generatedUpgrade.exotic_deps){
30
      generatedUpgrade.exotic_deps[index] = template(generatedUpgrade.exotic_deps[index])({'id': i});
31
    }
32
    let id = key+'-'+i;
33
    exoticUpgrades[id] = generatedUpgrade;
34
  }
35
  delete exoticUpgrades[key];
36
}
37
38
function clone(a) {
39
   return JSON.parse(JSON.stringify(a));
40
}
41
42
for(let key in exoticUpgrades){
43
  let upgrade = exoticUpgrades[key];
44
  for(let up of upgrade.exotic_deps){
45
    if(!exoticUpgrades[up]){
46
      throw new Error('Exotic dependency doesn\'t exist: '+ up + ' for '+ key);
47
    }
48
  }
49
  for(let up of upgrade.dark_deps){
50
    if(!darkUpgrades[up]){
51
      throw new Error('Dark dependency doesn\'t exist: '+ up + ' for '+ key);
52
    }
53
  }
54
}
55
56
jsonfile.writeFileSync('build/data/exotic_upgrades.json', exoticUpgrades, {
57
  spaces: 2
58
});
59
jsonfile.writeFileSync('build/data/generators.json', generators, {
60
  spaces: 2
61
});
62